package com.github.avatar.util;


import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 使用JDK 1.8新的API
 * @author Jerry Liu
 * @since 2017/4/5
 */
public class DateUtils {

    /**
     * 获取当前时间格式化形式
     * @param fmt 格式化字符串类型
     * @return 格式化的时间格式
     */
    public static String time(String fmt) {
        switch (fmt) {

            case DateStyle.DEFAULT:
                return LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateStyle.DEFAULT));

            case DateStyle.YYYY_MM_DD_HH_MM:
                return LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateStyle.YYYY_MM_DD_HH_MM));

            case DateStyle.YYYY_MM_DD:
                return LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateStyle.YYYY_MM_DD));

            case DateStyle.YYYY_MM:
                return LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateStyle.YYYY_MM));

            case DateStyle.YYYY:
                return LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateStyle.YYYY));
        }

        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateStyle.DEFAULT));
    }

    /**
     * 获取当前时间格式化形式
     * @param fmt 格式化字符串类型
     * @param x 时间差
     * @return 格式化的时间格式
     */
    public static String beforeTime(String fmt, int x) {
        switch (fmt) {

            case DateStyle.DEFAULT:
                return LocalDateTime.now().minusSeconds(x).format(DateTimeFormatter.ofPattern(DateStyle.DEFAULT));

            case DateStyle.YYYY_MM_DD_HH_MM:
                return LocalDateTime.now().minusMinutes(x).format(DateTimeFormatter.ofPattern(DateStyle.YYYY_MM_DD_HH_MM));

            case DateStyle.YYYY_MM_DD:
                return LocalDateTime.now().minusDays(x).format(DateTimeFormatter.ofPattern(DateStyle.YYYY_MM_DD));

            case DateStyle.YYYY_MM:
                return LocalDateTime.now().minusMonths(x).format(DateTimeFormatter.ofPattern(DateStyle.YYYY_MM));

            case DateStyle.YYYY:
                return LocalDateTime.now().minusYears(x).format(DateTimeFormatter.ofPattern(DateStyle.YYYY));
        }

        return LocalDateTime.now().minusSeconds(x).format(DateTimeFormatter.ofPattern(DateStyle.DEFAULT));
    }
}
